package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

import modelo.MJugador;
import modelo.MEquipo;
import modelo.MLiga;
import vista.VEquipo;
import vista.VJugadoresModeloTabla;

public class CEquipo implements ActionListener {

	private VEquipo vistaEqui;
	private MLiga liga;

	public CEquipo(MLiga liga) {
		super();
		this.vistaEqui = new VEquipo();
		this.vistaEqui.setLocation(480, 220);
		this.vistaEqui.setVisible(true);
		this.vistaEqui.addListener(this);
		this.liga = liga;
	}

	// caragar jugadores en un archivo de texto
	private void registrarEquipo() {
		try {

			if (vistaEqui.getanoFundacion().equals("")
					|| vistaEqui.getcodigoEquipo().equals("")
					|| vistaEqui.getnombreEquipo().equals("")
					|| vistaEqui.getnombreEstadio().equals("")
					|| vistaEqui.getciudad().equals(""))

				// Deben star todos los campos llenos para poder incluir el
				// arbitro
				vistaEqui
						.mostrarMensaje("Debe llenar todos los datos para poder registrar un equipo");
			else {
				String codigoEquipo = vistaEqui.getcodigoEquipo();
				String nombreEquipo = vistaEqui.getnombreEquipo();
				String anoFundacion = vistaEqui.getanoFundacion();
				String ciudad = vistaEqui.getciudad();
				String nombreEstadio = vistaEqui.getnombreEstadio();
				MEquipo modeloEqui = new MEquipo(codigoEquipo, nombreEquipo,
						anoFundacion, ciudad, nombreEstadio, 0, 0, 0, 0, 0, 0,
						0);
				liga.registrarEquipos(modeloEqui);
				vistaEqui
						.mostrarMensaje("El equipo fue registrado exitosamente");
				vistaEqui.borrarDatos();

			}
		} catch (Exception e) {
			vistaEqui
					.mostrarMensaje("No se pudo registrar el equipo, verifique que los datos sean correctos");
			vistaEqui.borrarDatos();

		}

	}

	public void cargarJugadores() throws NumberFormatException, IOException {

		// File f;
		javax.swing.JFileChooser j = new javax.swing.JFileChooser();
		j.showOpenDialog(j);
		String ruta = j.getSelectedFile().getAbsolutePath();

		FileReader fr = new FileReader(ruta);
		BufferedReader fb = new BufferedReader(fr);
		String cedula;
		String nombre;
		String apellido;
		String fechaNacimiento;
		String posicionJuego;
		int golesAnotados;

		MJugador jugador;

		MEquipo equipo = new MEquipo();

		String cadena;
		while ((cadena = fb.readLine()) != null) {
			cedula = cadena;
			nombre = fb.readLine();
			apellido = fb.readLine();
			fechaNacimiento = fb.readLine();
			posicionJuego = fb.readLine();
			golesAnotados = Integer.parseInt(fb.readLine());

			jugador = new MJugador(cedula, nombre, apellido, fechaNacimiento,
					posicionJuego, golesAnotados);

			equipo.registrarJugador(jugador);
			// System.out.println(cedula + nombre + apellido + fechaNacimiento
			// + posicionJuego + golesAnotados);
		}
		List<MJugador> jugadores = equipo.getJugadores();
		vistaEqui.setListado(new VJugadoresModeloTabla(jugadores));

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String actionCommand = e.getActionCommand();
		System.out.println(actionCommand);
		if (actionCommand.equals("Cargar")) {
			try {
				cargarJugadores();
			} catch (NumberFormatException e1) {
				vistaEqui.mostrarMensaje("error al cargar");
				e1.printStackTrace();
			} catch (IOException e1) {
				vistaEqui.mostrarMensaje("error al cargar");
				e1.printStackTrace();
			}
		} else if (actionCommand.equals("Registrar")) {
			registrarEquipo();
		}

		else if (actionCommand.equals("Cancelar")) {
			vistaEqui.borrarDatos();

		} else if (actionCommand.equals("Salir")) {
			this.vistaEqui.setVisible(false);
		}
	}

}
